package com.itheima.es.user.web;

import com.itheima.es.pojo.User;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@RequestMapping("/consumer")
public class UserController {

    @Autowired
    private RestTemplate restTemplate;

//    @Autowired
//    private DiscoveryClient discoveryClient;    // 访问eureka的客户端工具
//
//    @GetMapping("/user/{id}")
//    public User queryById(@PathVariable("id") Long id) {
//        // 根据服务名称获取当前服务的所有实例(eureka不负责,)
//        List<ServiceInstance> instances = discoveryClient.getInstances("user-service");
//
//        // 多个服务实例情况下，只能选择一个
//        // 启动user2后有两个端口,访问谁都可以。长度是2,可以用random每次随机数取0-1 (负载均衡)
//        // 服务被请求的次数是一致的
//        ServiceInstance serviceInstance = instances.get(0);
//        // 获取服务地址
//        String host = serviceInstance.getHost();
//        // 获取端口号
//        int port = serviceInstance.getPort();
//
//        // 指定URL地址和返回值类型
//        //  开启Ribbon负载均衡后,restTemplate遇到不能解析的地址则交给Ribbon解析
//        User user = this.restTemplate.getForObject("http://user-service/user/" + id, User.class);
//        return user;
//    }

    @GetMapping("/user/{id}")
    @HystrixCommand("")
    public User queryById(@PathVariable("id") Long id) {

        if (id == 1) {
            throw new RuntimeException("耶稣都保不住");
        }

    }
}
